#ifndef DISPLAY_H_
#define DISPLAY_H_

#include <stdio.h>
#include <string.h>
#include <string>
#include <stdlib.h>
#include "ThreadMutex.h"
#include "cstdlib"
#include <unistd.h>
#include <cstdio>
#include <sys/types.h>
#include <string>
#include <iostream>
#include <dirent.h>
#include <sys/stat.h>
#include <list>
#include <utility>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <map>
#include <sstream>
#include "ctime"
#include "defines.h"
#include "Protocolo.h"

using namespace std;

class Display{
private:
	/* Matriz del video */
	destinoSprite matriz[53][10];

	/* Id del jugador */
	unsigned short int miIdJugador;

	/* Indica si estoy vivo */
	bool estoyVivo;

	/* Instancia del interprete. */
    static Display *instance;

    /* Mutex para la modificacion o acceso de la pantalla */
    ThreadMutex *mutexPantalla;

    //Constructor privado por ser un singleton.
    Display();

public:
	/*Para obtener la instancia si la hay, sino generarla. */
	static Display *getInstance();

	/*Destructor*/
	~Display();

	/* Metodo que actualiza la pantalla con los cambios */
	void refresh();

	/* Vacia la matriz cuando comienza la partida */
	void vaciarMatriz();
};

#endif /* DISPLAY_H_ */
